import {
  Body,
  Controller,
  Get,
  HttpException,
  HttpStatus,
  Param,
  ParseIntPipe,
  Post,
} from '@nestjs/common';
import { CatCreateDto } from './cat-create.dto';

@Controller('cat')
export class CatController {
  @Get()
  index() {
    return 'cats';
  }

  @Get('/detail/:id')
  findById(@Param('id', new ParseIntPipe()) id: number) {
    return { id, type: typeof id };
  }

  @Get('/errors')
  getErrors() {
    throw new HttpException(
      {
        status: 2000,
        error: '自定义的错误信息',
        msg: '如果指定的是一个对象, 默认返回的数据结构就会被替换',
      },
      HttpStatus.FORBIDDEN,
    );
  }

  @Post('/create')
  create(@Body() dto: CatCreateDto) {
    // 对参数(dto)进行校验
    // 如果参数中的 name 为空会报错
    return { dto };
  }

  @Post('/create2')
  create2(@Body() dto: { name: string }) {
    // 但这里 name 为空是不会报错的
    return { dto };
  }
}
